package com.wwg.module_base.impl

import android.util.Log
import android.view.View
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import com.bumptech.glide.Glide
import com.wwg.module_base.inter.PageState_Inter
import com.wwgsky.basestatusfragment.R
import android.util.TypedValue


/**
 * 页面数据状态控制器
 */
class PageState_Impl constructor(
    val rootView: View,
    val stateImg: AppCompatImageView,
    val stateTxt: AppCompatTextView
) : PageState_Inter {

    /**
     * 展示各种状态
     */
    override fun showState(resId: Int, msg: String) {
        loadFinish()

        rootView.visibility = View.VISIBLE

        //设置图片资源
        if (resId == -999) {

            Log.e("BaseStatusFragment", "===============================================")
            Log.e("BaseStatusFragment", "====            未设置相应资源ID!            ====")
            Log.e("BaseStatusFragment", "===============================================")

            Glide.with(rootView.context)
                .load(R.mipmap.ic_launcher)
                .into(stateImg)

        } else {

            var value = TypedValue()
            rootView.context.resources.getValue(resId,value,true)
            if (getFileExtension(value.string.toString()).equals("gif")){
                Glide.with(rootView.context)
                    .asGif()
                    .load(resId)
                    .into(stateImg)
            }else{
                Glide.with(rootView.context)
                    .load(resId)
                    .into(stateImg)
            }

        }
        //设置提示文字
        stateTxt.text = msg
    }

    /**
     * 正常加载结束,隐藏所有异常状态
     */
    override fun loadFinish() {
        rootView.visibility = View.GONE
    }

    /**
     * 获取文件扩展名
     */
    fun getFileExtension(fileName:String) : String{

        var suffix = ""
        val lastIndexOf = fileName.lastIndexOf(".")
        if (lastIndexOf>0){
            suffix = fileName.substring(lastIndexOf+1)
        }
        return suffix

    }

    /**
     * 任何状态下的点击事件
     */
    override fun onClickState(onClickState: () -> Unit) {
        //设置点击监听
        rootView.setOnClickListener { onClickState() }
    }

}